﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Systemet.Domain
{
    public partial class RapportController
    {
        private Technical.RapportConnection rC;
        private Views.Intaktsrapporter RapportMain;
        //Rapporter


        //RAPPORT Kunder per produkt
        public List<Kund> KunderPerProdukt(string prodid, string prodNamn)
        {
            rC = new Technical.RapportConnection();
            //RapportMain = (Views.Intaktsrapporter)AccessController.Instance.MainView;
            return rC.RetrieveCustomersperProduct(prodid);
        }
        // EJ budgeterade Kunder
        public List<Kund> NotBudgetedCustomers()
        {
            rC = new Technical.RapportConnection();
            //RapportMain = (Views.Intaktsrapporter)AccessController.Instance.MainView;
            return rC.RetrieveUnBudgetedCustomers();
        }
        // Ej budgeterade produkter
        public List<Produkt> NotBudgetedProducts()
        {
            rC = new Technical.RapportConnection();
            //RapportMain = (Views.Intaktsrapporter)AccessController.Instance.MainView;
            return rC.NotBudgetedProducts();
        }

        //Hämta Intäktsbudgeteringar för (budget per kund)
        public List<Intäktsbudget> BudgetPerKund(string kundid, string prodNamn, string prodgrupp, string prodkategori, string prodOmrade)
        {
            rC = new Technical.RapportConnection();
            //RapportMain = (Views.Intaktsrapporter)AccessController.Instance.MainView;
            //RapportMain.UpdateDgvSource(rC.RapportBudgetperkund(kundid, prodNamn,prodgrupp,prodkategori,prodOmrade));
            //RapportMain.ColumnHider("Budget per kund");
            //RapportMain.TbSum("Budget per kund");
            return rC.RapportBudgetperkund(kundid, prodNamn, prodgrupp, prodkategori, prodOmrade);
        }

        //Hämta budget per kund och produkt
        public List<Intäktsbudget> BudgetPerKundOchProdukt(string kundID, string prodID, string prodNamn)
        {
            rC = new Technical.RapportConnection();
            //RapportMain = (Views.Intaktsrapporter)AccessController.Instance.MainView;
            //RapportMain.UpdateDgvSource(rC.RapportBudgPKundProdukt(kundID,prodID,prodNamn));
            //RapportMain.ColumnHider("Budget per kund och produkt");
            //RapportMain.TbSum("Budget per kund och produkt");
            return rC.RapportBudgPKundProdukt(kundID, prodID, prodNamn);
        }
        //Budgeterade produkter
        public IEnumerable<Produktregister> BudgetedProducts()
        {
            Technical.ProduktConnection pC = new Technical.ProduktConnection();
            IEnumerable<Produktregister> products = pC.RetrieveProductsOnBudget();
            return products;
        }

        //Rapport Budget per kund och produktgrupp
        public List<Intäktsbudget> budgetedCustNProductgroups(string kundID, string prodGrupp)
        {
            rC = new Technical.RapportConnection();
            //RapportMain = (Views.Intaktsrapporter)AccessController.Instance.MainView;
            //RapportMain.UpdateDgvSource(rC.RapportBudgetperkund(kundID,"",prodGrupp,"",""));
            //RapportMain.ColumnHider("Budget per kund och produktgrupp");
            //RapportMain.TbSum("Budget per kund och produktgrupp");
            return rC.RapportBudgetperkund(kundID, "", prodGrupp, "", "");
        }

        //Rapport budget per kund och produktionsområde
        public List<Intäktsbudget> budgetedCustNProductionAreas(string kundID, string prodOmrade)
        {
            rC = new Technical.RapportConnection();
            //RapportMain = (Views.Intaktsrapporter)AccessController.Instance.MainView;
            //RapportMain.UpdateDgvSource(rC.RapportBudgetperkund(kundID, "", "", "", prodOmrade));
            //RapportMain.ColumnHider("Budet per kund och produktionsområde");
            //RapportMain.TbSum("Budget per kund och produktionsområde");
            return rC.RapportBudgetperkund(kundID, "", "", "", prodOmrade);
        }
        public List<Intäktsbudgetregister> kontrolleraGradAndLockedIntäktsbudget()
        {
            rC = new Technical.RapportConnection();
            return rC.kontrolleraGradAndLockedIntäktsbudget();
        }

        public bool LockIntäktsBudgets()
        {
            rC = new Technical.RapportConnection();
            return rC.lockIntäktsBudgets();
        }

        public bool LockKostnadsBudgets()
        {
            rC = new Technical.RapportConnection();
            return rC.lockKostnadsBudgets();
        }

        //Rapport budget per produkt
        public List<Intäktsbudget> BudgetPerProduct(string prodID)
        {
            rC = new Technical.RapportConnection();
            //RapportMain = (Views.Intaktsrapporter)AccessController.Instance.MainView;
            //RapportMain.UpdateDgvSource(rC.RapportBudgetedProducts(prodID));
            //RapportMain.ColumnHider("Budget per produkt");
            //RapportMain.TbSum("Budget per produkt");
            return rC.RapportBudgetedProducts(prodID);
        }

        //Rapport Budget per produktgrupp
        public object BudgetedProductGroups(string prodgrupp)
        {
            rC = new Technical.RapportConnection();
            //RapportMain = (Views.Intaktsrapporter)AccessController.Instance.MainView;
            //RapportMain.UpdateDgvSource(rC.BudgetedProductGroups(prodgrupp));
            return rC.BudgetedProductGroups(prodgrupp);
        }

        //Rapport budget per produktionsområde
        public object BudgetedProductAreas(string avdelning)
        {
            rC = new Technical.RapportConnection();
            //RapportMain = (Views.Intaktsrapporter)AccessController.Instance.MainView;
            //RapportMain.UpdateDgvSource(rC.BudgetedProductAreas(avdelning));

            return rC.BudgetedProductAreas(avdelning);
        }

        //Rapport budget per Produkt och produktionsområde
        public object BudgetedProductsPerAreas(string avdelning)
        {
            rC = new Technical.RapportConnection();
            //RapportMain = (Views.Intaktsrapporter)AccessController.Instance.MainView;
            //RapportMain.UpdateDgvSource(rC.BudgetedProductsPerAreas(avdelning));

            //RapportMain.TbSum("Budget per produkt inom produktionsområde");
            return rC.BudgetedProductsPerAreas(avdelning);
        }

        //Rapport budget per Kundkategori
        public object BudgetedCustCategory(string kundKategori)
        {
            rC = new Technical.RapportConnection();
            //RapportMain = (Views.Intaktsrapporter)AccessController.Instance.MainView;
            //RapportMain.UpdateDgvSource(rC.BudgetedCustCategory(kundKategori));
            return rC.BudgetedCustCategory(kundKategori);
        }

        //Rapport budget per produktkategori
        public object BudgetedProductCategories(string prodKategori)
        {
            rC = new Technical.RapportConnection();
            //RapportMain = (Views.Intaktsrapporter)AccessController.Instance.MainView;
            //RapportMain.UpdateDgvSource(rC.BudgetedProductCategories(prodKategori));
            return rC.BudgetedProductCategories(prodKategori);
        }

        //Rapport budget per kund fallande
        public object BudgetedCustFalling()
        {
            rC = new Technical.RapportConnection();
            //RapportMain = (Views.Intaktsrapporter)AccessController.Instance.MainView;
            //RapportMain.UpdateDgvSource(rC.BudgetedCustFalling());
            //RapportMain.TbSum("Budget per kund fallande");
            return rC.BudgetedCustFalling();
        }

        //Rapport budget per produkt fallande
        public object BudgetedProductsFalling()
        {
            rC = new Technical.RapportConnection();
            //RapportMain = (Views.Intaktsrapporter)AccessController.Instance.MainView;
            //RapportMain.UpdateDgvSource(rC.BudgetedProductsFalling());
            //RapportMain.TbSum("Budget per produkt fallande");
            return rC.BudgetedProductsFalling();
        }

        //Rapport budget Totalt
        public object BudgetedTotals()
        {
            rC = new Technical.RapportConnection();
            //RapportMain = (Views.Intaktsrapporter)AccessController.Instance.MainView;
            //RapportMain.UpdateDgvSource(rC.BudgetedTotals());
            return rC.BudgetedTotals();
        }

        public void ClearSumTB()
        {
            RapportMain = (Views.Intaktsrapporter)AccessController.Instance.MainView;
            RapportMain.ClearTB();
        }
    }
}
